CREATE PROCEDURE dbo.sp_RepJuiciosReasignados_Detalle

-- Parametros

@FechaDesde varchar(30) ,
@FechaHasta varchar(30) ,
@Area int , 
@Procurador int , 
@EstadoProcesal int ,
@Materia int ,
@Tipo int ,
@Asunto int ,
@SeleccionTipoDocumento int ,	-- Litigio / Actividad No-Contenciosa / No Corresponde a PGR
@Ordenamiento int

AS

DECLARE
@FechaInicial datetime ,
@FechaFinal datetime  
SET @FechaInicial = CONVERT( DATETIME , LEFT( @FechaDesde , 10 ) + ' 00:00:00' , 121 ) 
SET @FechaFinal   = CONVERT( DATETIME , LEFT( @FechaHasta , 10 ) + ' 23:59:00' , 121 ) 

IF @Ordenamiento = 1	-- Parte
	SELECT	x.procurador , 
		v.nombre_procurador , 
		e.expediente , 
		x.materiatipoasunto , 
		m.nombre AS Materia_Nombre , 
		x.estadoprocesal , 
		t.nombre AS EstProc_Nombre , 
		Parte = CASE
			WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN ''
			WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) > 0 THEN E.Parte
			WHEN LEN( COALESCE( e.Promovente , '' ) ) > 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN E.Promovente
			ELSE e.Promovente + ' CONTRA ' + e.Parte
			END 
	FROM 	expediente e 
		INNER JOIN procuradores_x_expediente x 
			ON e.expediente = x.expediente AND x.primario_chk = '1' 
		INNER JOIN View_Nombre_Procuradores v
			ON x.procurador = v.procurador 
		INNER JOIN estadoprocesal t 
			ON t.estadoprocesal = x.estadoprocesal AND t.nombre NOT LIKE '%Fenecido%' 
		INNER JOIN materiatipoasunto m 
			ON m.materiatipoasunto = x.materiatipoasunto 
	WHERE 	x.fecha_ing_ofic BETWEEN @FechaInicial AND @FechaFinal

		AND x.area = CASE @Area
				WHEN -1 then x.area 
				ELSE @Area
				END

		AND x.Procurador = CASE @Procurador
					WHEN -1 then x.Procurador 
					ELSE @Procurador
					END

		AND x.EstadoProcesal = CASE @EstadoProcesal
						WHEN -1 then x.EstadoProcesal 
						ELSE @EstadoProcesal
						END

		AND (x.MateriaTipoAsunto / 10000) =
					CASE @Materia
						WHEN -1 then (x.MateriaTipoAsunto / 10000) 
						ELSE @Materia
						END

		AND (x.MateriaTipoAsunto % 10000) / 100 =
					CASE @Tipo
						WHEN -1 then (x.MateriaTipoAsunto % 10000) / 100 
						ELSE @Tipo
						END

		AND (x.MateriaTipoAsunto % 100) =
					CASE @Asunto
						WHEN -1 then (x.MateriaTipoAsunto % 100) 
						ELSE @Asunto
						END

		AND e.Tipo_Expediente =	CASE @SeleccionTipoDocumento
						WHEN -1 then e.Tipo_Expediente
						ELSE @SeleccionTipoDocumento
						END
	ORDER BY Parte
ELSE	-- @Ordenamiento = 2 = Procurador/Parte
	SELECT	x.procurador , 
		v.nombre_procurador , 
		e.expediente , 
		x.materiatipoasunto , 
		m.nombre AS Materia_Nombre , 
		x.estadoprocesal , 
		t.nombre AS EstProc_Nombre , 
		Parte = CASE
			WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN ''
			WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) > 0 THEN E.Parte
			WHEN LEN( COALESCE( e.Promovente , '' ) ) > 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN E.Promovente
			ELSE e.Promovente + ' CONTRA ' + e.Parte
			END 
	FROM 	expediente e INNER JOIN procuradores_x_expediente x 
			ON e.expediente=x.expediente AND x.primario_chk = '1' 
		INNER JOIN View_Nombre_Procuradores v
			ON x.procurador = v.procurador 
		INNER JOIN estadoprocesal t 
			ON t.estadoprocesal = x.estadoprocesal AND t.nombre NOT LIKE '%Fenecido%' 
		INNER JOIN materiatipoasunto m 
			ON m.materiatipoasunto = x.materiatipoasunto 
	WHERE 	DATEPART(yyyy,fecha_ing_pgr)*1000 + DATEPART(dy,fecha_ing_pgr) 
			BETWEEN DATEPART(yyyy,@FechaInicial)*1000 + DATEPART(dy,@FechaInicial) 
	                AND 	DATEPART(yyyy,@FechaFinal)*1000 + DATEPART(dy,@FechaFinal) 

		AND x.area = CASE @Area
					WHEN -1 then x.area 
					ELSE @Area
					END

		AND x.Procurador = CASE @Procurador
					WHEN -1 then x.Procurador 
					ELSE @Procurador
					END

		AND x.EstadoProcesal = CASE @EstadoProcesal
						WHEN -1 then x.EstadoProcesal 
						ELSE @EstadoProcesal
						END

		AND (x.MateriaTipoAsunto / 10000) =
					CASE @Materia
						WHEN -1 then (x.MateriaTipoAsunto / 10000) 
						ELSE @Materia
						END

		AND (x.MateriaTipoAsunto % 10000) / 100 =
					CASE @Tipo
						WHEN -1 then (x.MateriaTipoAsunto % 10000) / 100 
						ELSE @Tipo
						END

		AND (x.MateriaTipoAsunto % 100) = 
					CASE @Asunto
						WHEN -1 then (x.MateriaTipoAsunto % 100) 
						ELSE @Asunto
						END

		AND e.Tipo_Expediente =	CASE @SeleccionTipoDocumento
						WHEN -1 then e.Tipo_Expediente
						ELSE @SeleccionTipoDocumento
					END

	ORDER BY Nombre_Procurador , 
		Parte
